package 笔试;

public class 字符串转换成整数 {
    public int myAtoi(String s) {
        if(s.equals("")) {
            return 0;
        }
        int index = 0;
        int res = 0;
        int flag = 1;

        while(index < s.length() && s.charAt(index) == ' ') {
            index ++;
        }

        if(index == s.length()) {
            return 0;
        }

        if(s.charAt(index) == '+' || s.charAt(index) == '-') {
            flag = s.charAt(index) == '+' ? 1 : -1;
            index++;
        }

        for(; index < s.length(); index++) {
            int digit = s.charAt(index) - '0';

            if(digit > 9 || digit < 0) {
                break;
            }

            if(res > Integer.MAX_VALUE/10 || (res == Integer.MAX_VALUE/10 && digit > 7)) {
                if(flag == 1) {
                    return Integer.MAX_VALUE;
                } else {
                    return Integer.MIN_VALUE;
                }
            }

            res = res * 10 + digit;
        }
        return res * flag;
    }
}
